Python if判断语句
在本章中我们来介绍 if语句、elif语句、else语句、if循环嵌套、三元运算符、省略判断条件、match...case语句,系统学习Python判断语句,条件控制结构。通过判断语句,程序可以根据不同的情况采取不同的处理方式,从而提高程序的灵活性。
if else语句
在生活中有很多时候需要我们作出选择, 有些选择时2选1,比如说 选择男厕还是女厕?选择结婚还是不婚?选择养娃还是丁克?而还有一些选择是从多个选择中选择一个。比如说你毕业了以后,你是选择考研、选择工作、选择留学还是选择创业?这些选项非常多 但是你也只能选择一个。再比如你是一个高富帅或者白富美,有众多的追求者,但是最终你也只能选择一个人结婚。
那么本节我们就先来介绍,最简单的选择情况也就是2选1。在Python中使用if条件语句来实现选择结构。if条件语句我们在运算符的章节中也已经有过基本的介绍,我们再来看一下
语法:
if condition:
# 如果条件为真,执行这里的代码块
else:
# 如果条件为假,执行这里的代码块
其中,condition
是一个条件表达式,它可以是一个布尔值、一个比较表达式或一个逻辑表达式。如果condition
为真,那么执行if
后面的代码块;否则,执行else
后面的代码块。
实例:
实例1:判断奇偶性
下面我们来编写一个判断数字是奇数还是偶数的程序 ,如果一个数它能被二整除,那么它就是偶数。如果不能够被二整除,它就是奇数 比如它的余数是0,表示它能够整除,否则的话它就是奇数 。
number = int(input('请输入一个整数:'))
if number % 2 == 0:
print('您输入的是偶数')
else:
print('您输入的是奇数')
输出结果:
请输入一个整数: 5
您输入的是奇数
实例2:只有if语句单独条件的情况
我们在看一个只使用一个if语句的情况,我们要实现的功能是这样的:如果今天晚上不加班,我就去看电影,看完电影再回家,那么如果今天晚上加班, 下了班以后我就直接回家。现在我们就来实现这个功能
work_overtime = True
if not work_overtime:
print('出去看电影')
print('回家睡觉')
else:
print('回家睡觉')
但是仔细看这段代码,你会发现一个问题,就是在if这里,我输出了一个回家睡觉,在else这里我又输出了一遍回家睡觉,那么也就是说,不管你看不看电影都要回家睡觉,那么我们就来修改一下
work_overtime = True
if not work_overtime:
print('出去看电影')
print('回家睡觉')
这里两段代码实现了相同的功能,而下面的代码看起来更加简洁。在这个代码块中,我们的逻辑非常简单,而在实际的编程过程中,显然第1种情况会令复杂的局面会更加复杂,第2种情况则会简化这种局面。所以我们推荐使用第2种情况。如果一个if语句能够实现的功能,我们就尽量不用使用else 。
实例3: 判断文件类型
在处理文件时,我们需要根据文件类型执行不同的操作。使用if else语句,我们可以根据文件扩展名判断文件类型,并执行相应的代码。例如:
filename = "test.txt"
if filename.endswith(".txt"):
print("这是一个文本文件")
else:
print("这不是一个文本文件")
在这个示例中,我们使用endswith()
方法来判断文件名是否以.txt
结尾。如果是,我们输出这是一个文本文件
;否则,我们输出这不是一个文本文件
。
elif语句
在上一节课程中我们学习了简单的if语句,包括单独使用if以及使用if else语句。现在我们来回顾一下,如果天气很热就多喝点水,今天天气很冷,注意保暖,祝今天愉快,这两种情况我们可以使用if else语句。我们知道天气它是多变的,不一定只有冷和热,他 还有很多情况,比如说刮风下雨,多云等等,那么这种情况使用if else语句就不合适了。因为if else他只能判断两种情况。对于多种情况,我们就要使用elif语句。

Python中的elif语句是if语句的延伸,elif用于在多个条件语句中添加一个或多个条件。在Python中,elif语句用于检查多个条件语句,当if语句中的条件不为真时,elif语句会检查下一个条件语句,直到所有条件语句都被检查完毕。
语法
elif语句的语法如下所示:
if 第1个条件:
执行满足第1个条件的语句
elif 第2个条件:
执行满足第2个条件的语句
elif 第n个条件:
执行满足第n个条件的语句
else:
以上全不满足,执行这个语句
- 条件可以是比较运算符、逻辑运算符等,其值为True或False。
- elif语句可以有多个,else语句是可选的。
实例
实例1:使用elif语句判断天气
is_hot = False
is_cold = True
is_rain = True
if is_hot: # 不要忘记冒号
print("今天天气很热")
print("请多喝点水")
elif is_cold:
print("今天天气寒冷")
print("请添加衣物")
elif is_rain:
print("今天下雨")
print("请出门带伞")
else:
print("今天是个好天气")
print("祝您今天愉快")
输出结果:
今天天气寒冷
请添加衣物
祝您今天愉快
实例1:使用elif语句判断天气
is_hot = False
is_cold = True
is_rain = True
if is_hot: # 不要忘记冒号
print("今天天气很热")
print("请多喝点水")
elif is_cold:
print("今天天气寒冷")
print("请添加衣物")
elif is_rain:
print("今天下雨")
print("请出门带伞")
else:
print("今天是个好天气")
print("祝您今天愉快")
输出结果:
今天天气寒冷
请添加衣物
祝您今天愉快
实例2:网站的用户名验证
下面我们来编写一个比较常用的程序,就是在注册网站的时候,网站的用户名通常是要求我们填写大于三个小于50个,因为三个以内不安全,50个以上浪费资源,所以他要求我们填写的用户名在3~50个之间
username = input('请输入您的用户名')
if len(username) < 3:
print("名字至少需要三个字符")
elif len(username) > 50:
print("名字最多50个字符 ")
else:
print("名字有效")
输出结果:
请输入您的用户名:andy
名字有效
这里的用户名它是一个字符串,那么要判断它的长度,我们可以用一个函数叫做len,也就是length的缩写,通过它可以获取这个字符串的长度。
实例3:实现数字转换
num = 5
if num == 1:
print("一")
elif num == 2:
print("二")
elif num == 3:
print("三")
elif num == 4:
print("四")
else:
print("不是1-4之间的数字")
在这个例子中,变量num被赋值为5。如果num等于1,打印出“一”;如果num等于2,打印出“二”,以此类推。如果num不是1到4之间的数字,则输出“不是1-4之间的数字”。
作业
作业一:判断一个数字是否为奇数,如果是奇数,输出“是奇数”,否则输出“不是奇数”。
作业二:检查一个年份是否为闰年。闰年的判断规则是:如果一个年份可以被4整除但不能被100整除,则该年份为闰年;如果一个年份可以被400整除,则该年份也是闰年。
作业三:根据用户输入的成绩,输出对应的等级。等级与成绩的对应关系如下所示:
成绩范围 | 等级 |
---|---|
90-100 | A |
80-89 | B |
70-79 | C |
60-69 | D |
0-59 | E |
作业四:根据用户输入的月份,输出该月份所属的季节。季节与月份的对应关系如下所示:
季节 | 月份 |
---|---|
冬季 | 12、1、2月份 |
春季 | 3、4、5月份 |
夏季 | 6、7、8月份 |
秋季 | 9、10、11月份 |
作业五:根据用户输入的年龄,输出对应的人生阶段。人生阶段与年龄的对应关系如下所示:
人生阶段 | 年龄范围 |
---|---|
婴儿期 | 0-1岁 |
幼儿期 | 1-3岁 |
学龄前期 | 3-6岁 |
少儿期 | 6-12岁 |
青少年期 | 12-18岁 |
成年期 | 18-45岁 |
中年期 | 45-60岁 |
老年期 | 60岁以上 |
获得作业答案请联本笔记的配套视频:Python零基础入门动画课【全集】
if语句嵌套
本节我们要介绍的内容就是,if语句的嵌套。当我们需要根据不同的条件执行不同的代码块时,Python中的if语句是非 常有用的。而当这些条件需要更加复杂时,我们可以使用if语句的嵌套来实现。在讲解嵌套之前,我们来看一个场景。
那就是找工作。在找工作的时候,大家都是优先考虑这份工作是否满足你的兴趣,如果你感兴趣的话,我在看这份工作工资是否很高,如果工资很高,那么我会很开心。如果工资不高,我就会有点低落。但是不管怎样,我都不会去考虑我不感兴趣的工作。
我们把这个场景转化为一个伪代码,所谓的伪代码指的不是可以直接运行的代码,它只是一种来表达逻辑的形式。如果我们把刚才的情景转化为伪代码,它是这样的
语法
Python中if语句嵌套的语法如下:
if condition1:
statement1
if condition2:
statement2
else:
statement3
else:
statement4
其中,condition1
是一个条件表达式,如果它的值为True,则执行statement1
。在if
语句嵌套中,condition2
是一个嵌套的条件表达式,如果它的值为True,则执行statement2
;如果它的值为False,则执行statement3
。如果condition1
的值为False,则执行statement4
。
需要注意的是,if
语句嵌套中的缩进非常重要, 它们决定了哪些代码块属于哪个条件分支。
参数
在if语句嵌套中,可以使用以下参数:
condition1
:必需,一个条件表达式,用于判断是否执行statement1
。statement1
:必需,如果condition1
的值为True,则执行该语句块。condition2
:可选,一个嵌套的条件表达式,用于判断是否执行statement2
或statement3
。statement2
:可选,如果condition2
的值为True,则执行该语句块。statement3
:可选,如果condition2
的值为False,则执行该语句块。statement4
:可选,如果condition1
的值为False,则执行该语句块。
实例
实例1:改造丈母娘的灵魂质问
在前面我们介绍过来自丈母娘的灵魂质问问题,丈母娘在听见了马老师的话之后,他觉得芝麻信用更为重要,所以他最看重的是芝麻信用,如果你的芝麻信用评分很低,她会直接把你pass掉,而如果你的芝麻信用很高,并且你还有房或者有车,她就会很高兴。那如果你的芝麻信用很高,既有车又有房,那么非你莫属
has_house = True
has_car = True
low_level = 0
if not low_level:
if has_house or has_car:
print('非常满意')
elif has_house and has_car:
print('非你莫属')
else:
print('满意')
else:
print('你不符合要求')
实例2:判断一个数字是否在一个区间内:
num = 10
if num >= 0:
if num <= 10:
print("这个数在0和10之间")
else:
print("这个数大于10")
else:
print("这个数小于0")
在这个例子中,首先判断num
是否大于等于0,如果是,则继续判断它是否小于等于10。如果是,则输出"这个数在0和10之间";否则输出"这个数大于10"。如果num
小于0,则直接输出"这个数小于0"。
作业:
作业一:用户输入年龄,如果年龄小于18岁,则输出"你是未成年人.";否则输出"你成年了"。
作业二:用户输入性别和年龄,如果用户是男性且年龄大于等于18岁,则输出"你是一个成年男人";如果用户是男性且年龄小于18岁,则输出"你是一个男孩";如果用户是女性且年龄大于等于18岁,则输出"成年女人";否则输出"你是一个女孩"。
作业三:询问用户的分数,如果分数大于等于90分,则输出"你的成绩是 A.";如果分数大于等于80分且小于90分,则输出"你的成绩是B";如果分数大于等于70分且小于80分,则输出"你的成绩是C";如果分数大于等于60分且小于70分,则输出"你的成绩是.";否则输出"你的成绩是F"。
作业四:编写一个程序,询问用户的姓名和年龄,如果年龄小于18岁,则输出"{name}
is under 18 years old.";否则输出"{name}
is an adult."。
作业五:编写一个程序,询问用户的身高和体重,计算BMI指数,如果BMI指数小于18.5,则输出"偏瘦";如果BMI指数大于等于18.5且小于25,则输出"正常体重";如果BMI 指数大于等于25且小于30,则输出"超重了";否则输出"肥胖"。
获得作业答案请联本笔记的配套视频:Python零基础入门动画课【全集】
三元运算符
本节课我们来介绍一下if语句的另一种常用的形式:三元运算符。有时它也被称为三目运算符,条件表达式。它一种简洁的条件表达式,用于在一行代码中实现基本的if-else语句。它由三部分组成,分别是条件,真值和假值。
语法如下:
真值 if 条件 else 假值
其中,条件是需要判断的条件,真值是条件为真时的返回值,假值是条件 为假时的返回值。
实例
实例1:使用三目运算符来判断一个数是否为偶数
num = 6
result = "偶数" if num % 2 == 0 else "奇数"
print(result)
输出结果为:
偶数
在这个例子中,我们首先定义了一个数num为6,然后使用三目运算符判断num是否为偶数。如果num % 2等于0,即num为偶数,那么返回值为"偶数",否则为"奇数"。
实例2:使用三元运算 符求解y = |x|
x=-1
y = x if x >= 0 else -x
print(y)
输出结果:
1
实例3:三目运算符来判断一个数是否大于10,并且是否为偶数:
num = 8
result = "大于10的偶数" if num > 10 and num % 2 == 0 else "不是大于10的偶数"
print(result)
输出结果为:
不是大于10的偶数
在这个例子中,我们首先定义了一个数num为8,然后使用三目运算符判断num是否大于10,且是否为偶数。如果满足条件,返回值为"大于10的偶数",否则为"不是大于10的偶数"。
在逻辑比较简单的情况下,使用三元运算符是非常方便的,如果你的逻辑非常复杂,你再是这种情况就不合适了,会使这个代码非常难以阅读 ,反而是得不偿失 。
作业:
作业一: 判断一个数是否为负数,如果是,返回绝对值,否则返回原数。
作业二: 判断一个数是否为正数,如果是,返回平方,否则返回0。
作业三: 判断一个数是否大于等于10,如果是,返回数值加上10,否则返回数值减去10。
作业四: 判断一个数是否为偶数,并且是否大于等于10,如果满足条件,返回数值加上5,否则返回数值减去5。
作业五: 判断一个字符串是否为空,如果是,返回"空字符串",否则返回原字符串。
获得作业答案请联本笔记的配套视频:Python零基础入门动画课【全集】
省略判断条件
本节我们来介绍一下,在if语句中使用省略判断条件,使代码更加简洁。
语法如下:
if 表达式:
# 程序执行语句
在上述语 法中,表达式即为判断条件,如果表达式为真,则执行程序执行语句;如果表达式为假,则不执行程序执行语句。表达式:需要进行判断的表达式,可以是变量、常量、函数等。
下面给总结了一个Python判断条件的省略用法
实例
实例1:字符串类型不为空
a = 10
if a:
print("a的值为非0数")
在上述代码中,我们没有使用比较运算符或逻辑运算符来进行判断,而是直接将变量a作为表达式进行判断。如果a的值为非0数,则程序会执行print语句,输出a的值为非0数。
实例2:字符串类型为空
a = ""
if not a:
print("字符串a为空")
在上述代码中,我们使用了not运算符来判断字符串b是否为空。如果b为空字符串,则not b为True,程序会执行print语句,输出字符串b为空。
实例3:列表类型
a = [1, 2, 3]
if a:
print("列表a不为空")
在上述代码中,我们直接将列表c作为表达式进行判断,如果c不为空,则程序会执行print语句,输出列表c不为空。
以上就是我们常见的数据类型,可以转化为布尔值的情况,是不是以后我们在写代码的时候,全部使用省略的方法呢?因为这样写代码会更简短,就像下图这样
左侧的代码和右侧代码效果是一样的,虽然左侧的代码更为简短,但是在这里我们推荐大家使用右侧的方式,这里有一个原则,在实际写代码时,除了布尔类型的数据条件判断最好是显性的。比如说:我们一看就知道这里的i他是一个数值类型,因为它在和0做对比,而对于左侧,我们根本不知道这个i是什么类型,所以 会产生很多误解,这样的判断条件就是显性判断,可以帮助阅读者更好的理解代码。
作业:
作业一:使用省略判断条件的方式,判断一个字符串是否为非空字符串。如果是非空字符串,则输出该字符串的长度。
作业二:使用省略判断条件的方式,判断一个列表是否为空列表。如果是空列表,则输出该列表的长度为0。
作业三:使用省略判断条件的方式,判断一个字典中是否存在某个键,如果存在,则输出该键对应的值。
作业四:使用省略判断条件的方式,判断一个数字是否为正整数。如果是正整数,则输出该数字的平方。
作业五:使用省略判断条件的方式,判断一个变量是否为None。如果是None,则输出该变量为None。
获得作业答案请联本笔记的配套视频:Python零基础入门动画课【全集】
match...case语句
Python 3.10中新增了一种匹配模式,即match...case语句。该语句用于在多个选项中选择一个选项并执行相应的操作。需要注意的是,match...case语句只能在Python 3.10及以上版本中使用。如果使用较旧的Python版本,则需要使用if...elif...else语句来实现相应的功能。
match...case语句的语法如下:
```
match expression:
case pattern1:
# 当expression匹配pattern1时执行的代码
case pattern2:
# 当expression匹配pattern2时执行的代码
...
case patternN:
# 当expression匹配patternN时执行的代码
```
其中,expression
是要匹配的表达式,pattern
是用于匹配的模式,可以是常量、变量、类型或其他类型的表达式。如果expression
匹配了其中的某个pattern
,则执行该case
下的代码块。同时,case
语句也支持|
运算符,可以同时匹配多个模式。
实例
实例1:常量模式
常量模式指的是和表达式完全相等的常量。例如:
match x:
case 1:
print("x等于1")
case 2:
print("x等于2")
case 3:
print("x等于3")
在上面的例子中,如果x
的值为1,则会执行第一个case块中的代码,输出x等于1
。
实例2:变量模式
变量模式指的是将表达式的值赋给一个变量。例如:
match x:
case 1:
print("x等于1")
case y:
print(f"x等于{y}")
在上面的例子中,如果x
的值为1,则会执行第一个case块中的代码,输出x等于1
。如果x
的值为其它值,如2或3,则会执行第二个case块中的代码,输出x等于2
或x等于3
。
实例3:类型模式
类型模式指的是将表达式的类型作为模式。例如:
match x:
case str:
print("x是字符串")
case int:
print("x是整数")
case float:
print("x是浮点数")
在上面的例子中,如果x
的类型为字符串,则会执行第一个case块中的代码,输出x是字符串
。如果x
的类型为整数,则会执行第二个case块中的代码,输出x是整数
。如果x
的类型为浮点数,则会执行第三个case块中的代码,输出x是浮点数
。
实例4:容器模式
容器模式指的是将表达式的值按照某种规则进行匹配 。例如:
match x:
case [1, 2, 3]:
print("x是包含1、2、3的列表")
case [1, 2, _]:
print("x是包含1、2的列表")
case {1, 2, 3}:
print("x是包含1、2、3的集合")
case {'x': 1, 'y': 2}:
print("x是包含键值对'x': 1和'y': 2的字典")
在上面的例子中,如果x
的值为[1, 2, 3]
,则会执行第一个case块中的代码,输出x是包含1、2、3的列表
。如果x
的值为[1, 2, 4]
,则会执行第二个case块中的代码,输出x是包含1、2的列表
。如果x
的值为{1, 2, 3}
,则会执行第三个case块中的代码,输出x是包含1、2、3的集合
。如果x
的值为{'x': 1, 'y': 2, 'z': 3}
,则会执行默认操作。
实例5:使用|
运算符将多个模式组合在一起
match x:
case str | int:
print("x是字符串或整数")
case [1, 2, _] | {1, 2, 3}:
print("x是包含1、2的列表或集合")
在上面的例子中,如果x
的值为字符串或整数,则会执行第一个case块中的代码,输出x是字符串或整数
。如果x
的值为包含1、2的列表或集合,则会执行第二个case块中的代码,输出x是包含1、2的列表或集合
。
作业
作业一:使用常量模式判断一个月份属于哪个季节。例如,1月、2月、12月属于冬季,3月、4月、5月属于春季,6月、7月、8月属于夏季,9月、10月、11月属于秋季。
作业二:使用变量模式判断一个数是否为偶数。如果是偶数,输出该数除以2的结果,否则输出该数乘以3再加1的结果。
作业三:使用类型模式判断一个对象的类型。例如,如果该对象是字符串类型,则输出该字符串的长度;如果该对象是整数类型,则输出该整数的平方根;如果该对象是列表类型,则输出该列表的第一个元素;如果该对象是字典类型,则输出该字典的键列表。
作业四:使用容器模式判断一个字符串是否为回文字符串。例如,如果该字符串是"level"
,则输出True
;如果该字符串是"hello"
,则输出False
。
作业五:使用多模式组合判断一个对象是否为字符串或整数或列表类型。如果是字符串类型,则输出该字符串的长度;如果是整数类型,则输出该整数的平方根;如果是列表类型,则输出该列表的第一个元素。
获得作业答案请联本笔记的配套视频:Python零基础入门动画课【全集】